
package ar.com.arkios.kfconsap.tablas;

import ar.com.arkios.kfconmodelo.modelo.Calibre;
import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import java.util.List;

 /**
 *
 * @author Ale
 * @version 1.01
 * 
 */



public class CalibreDAO extends GenericSAPDAO{

    //Atributos    
    private List<Calibre> misCalibres;

    //Constructores    
    public CalibreDAO(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException {
        super.setMyTableName("I_CALIBRE");
        super.setMyTable(aFunction);
        this.misCalibres=new ArrayList();
    }

    //Getters & Setters    

    public List<Calibre> getMisCalibres() {
        return misCalibres;
    }

    //Metodos privados
    /**
     * Agrega un "calibre" a la coleccion "misCalibres".
     * @param elCalibre
     */
    private void addUnCalibre(Calibre elCalibre) {
        this.misCalibres.add(elCalibre);
    }

     /**
      * Columnas de Calibres:
      * ZESPECIE	ZZESPECIE		CHAR	4	Especie de frutas     
      * ZENVASE	ZZENVASE		CHAR	6	Envase de frutas.
      * ZCALIBRE	ZCALIBRES		CHAR	9	Calibre  mas posición 9 posiciones
      */ 
    //Metodos publicos
    /**
     * Recorre "super.getMyTable()" de la RFC y por cada registro crea un "calibre" y lo agrega a "misCalibres".
     */
    public void findAll() throws SapGeneralException {        
        Calibre calibre;
            try{
                for (int i = 0; i < super.getMyTable().getNumRows(); i++){
                super.getMyTable().setRow(i);            
                calibre=new Calibre(super.getMyTable().getString("ZESPECIE"),super.getMyTable().getString("ZENVASE"),super.getMyTable().getString("ZCALIBRE"));
                addUnCalibre(calibre);
            }
        }catch(JCO.ConversionException ex){
            try {
                throw new DataTypeInvalidConversionException(ex.getMessage());
            } catch (DataTypeInvalidConversionException ex1) {
                throw new SapGeneralException(ex1.getMessage());
            }
        
        }

    }
    
    /**
     * Solo para Las Pruebas.
     * Imprime todos los registros de "myTable".
     */
    @Override
    public void printAll() {
        System.out.println("ZESPECIE"+'\t'+"ZENVASE"+'\t'+"ZCALIBRE");
        for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            System.out.println(super.getMyTable().getString("ZESPECIE") +
            '\t' + super.getMyTable().getString("ZENVASE") +            
            '\t' + super.getMyTable().getString("ZCALIBRE"));            
        }
    }

}
